#c_maior = { '>': op_GT , '>=': op_GE }
#c_menor = { '<': op_LT , '<=': op_LE, '<>': op_NE }
#c_igual = { '=': op_IGUAL, '==': op_EQ}

# palavras reservadas
t_if = 'if'
t_else = 'else'
t_while = 'while'
t_function = 'function'
t_int = 'int'
t_program = 'program'
t_char = 'char'
t_char = 'true'
t_char = 'false'
t_declare = 'declare'
t_return = 'return'
listaPalavrasReservadas = {t_return : 'return', t_declare:'declare', t_if:'if', t_else:'else', t_while:'while', t_function:'function', t_int:'int',  t_program:'program', t_char:'char'}

# tabelas de Simbolos

# delimitadores de condicoes e blocos
t_AP = 0 # (     Abre parenteses
t_FP = 1 # )     Fecha parenteses
t_ACh = 2 # {     Abre chaves
t_FCh = 3 # }     Fecha chaves
t_ACo = 4 # [     Abre conchetes
t_FCo = 5 # ]     Fecha conchetes

# operadores de comparacao aritmetica
t_MeIg = 6 # <=    menor ou igual que
t_Dif = 7 # <>    diferente que
t_Me = 8 # <     menor que
t_Ig = 9 # ==    igual
t_MaIg = 10 # >=    maior ou igual que
t_Ma = 11 # >     maior que

# operadores aritmeticos
t_Mais = 12 # +
t_Menos = 13 # -
t_Mult = 14 # *
t_Div = 15 # /
t_Atrib = 16 # =
t_PontoVirg = 17 # ;
t_Virgula = 18 # ,
t_Ponto = 19 # ,

# operadores logicos
t_Nao = 20 # !     NOT
t_E = 21 # &&    AND
t_Ou = 22 # ||    OR

listaSimbolos = { '(':t_AP, ')':t_FP, '{':t_ACh, '}':t_FCh,
                  '[':t_ACo, ']':t_FCo, '<=':t_MeIg, '>=':t_MaIg, '<>':t_Dif, 
                  '==':t_Ig, '>':t_Ma, '<':t_Me, '+':t_Mais, '-':t_Menos, '=':t_Atrib, 
                  '*':t_Mult, '/':t_Div, ';':t_PontoVirg, ',':t_Virgula, '.':t_Ponto,
                  '!':t_Nao, '&&':t_E, '||':t_Ou}

# classes
c_reservada = 1
c_identificador = 2
c_numero = 3
c_simbolo = 4
c_outro = 5